//
//  DeviceSystemInfoUtil.h
//  JQLive
//
//  Created by Bruce on 2019/12/10.
//  Copyright © 2019 mlqk. All rights reserved.
//

#import <Foundation/Foundation.h>
typedef enum : NSUInteger {
    NetTypeUnknown,
    NetType2G,
    NetType3G,
    NetType4G,
} NetDetailType;

NS_ASSUME_NONNULL_BEGIN

/// 设备信息工具类
@interface DeviceSystemInfoUtil : NSObject
#pragma mark - 硬件

/**
 是否是真机 (YES：真机；NO:模拟器)
 
 @return 是否是真机
 */
+ (BOOL)BDADdeviceString;

/**
 获取当前设备可用内存(单位：MB）
 
 @param type 返回字符串类型(1:eg 12.34MB; 2:eg 12.345678; 3:eg 12.34)
 @return 可用内存字符串
 */
+ (NSString *)availableMemoryWithType:(int)type;

/**
 获取当前任务所占用的内存（单位：MB）
 
 @return 浮点型字符串
 */
+ (NSString *)usedMemory;

/**
 cpu类型
 
 @return cpu类型
 */
+ (NSString *)getCPUType;

/**
 设备总内存（单位：MB）
 
 @return 浮点型字符串(eg:12.34MB)
 */
+ (NSString *)getTotalMemoryBytes;

/**
 获取设备PPI
 
 @return 设备PPI
 */
+ (NSInteger)getIOSPPI;

#pragma mark - 系统

/**
 获取系统
 
 @return 系统信息
 */
+ (NSString *)deviceString;


/**
 获取广告标识
 
 @return IDFA
 */
+ (NSString *)getIDFA;

/**
 获取iOS系统版本号
 
 @return iOS系统版本号
 */
+ (float)getIOSVersion;

#pragma mark - 网络

/**
 获取设备当前网络IP地址
 
 @param preferIPv4 是否是IPv4
 @return 网络IP地址
 */
+ (NSString *)getIPAddress:(BOOL)preferIPv4;

/**
 获取当前具体的蜂窝网络类型
 
 @return 具体的蜂窝网络类型
 */
+ (NetDetailType)getCurrentNetDetailType;

/**
 获取运营商
 
 @return 获取运营商名字
 */
+ (NSString *)getCarrier;

#pragma mark - 其他
/**
 当前APP版本
 
 @return e.g 3.0.0/3.0.1/...
 */
+ (NSString *)appVersion;

/**
 获取区域标志符（非语言标志）
 
 @return e.g en_GB...
 */
+ (NSString *)localeIdentifier;

/**
 判断设备是否为iPad

 @return NO:iPhone/TV/CarPlay YES:iPad
 */
+ (BOOL)isiPad;

/**
 是否为视网膜屏幕

 @return YES/NO
 */
+ (BOOL)isRetina;

/**
 判断系统版本

 @return YES/NO
 */
+ (BOOL)iOS7AndLater;

+ (BOOL)iOS8AndLater;

+ (BOOL)iOS9AndLater;

+ (BOOL)iOS10AndLater;

+ (BOOL)iOS11AndLater;

/**
 判断相机是否可用(前置)
 
 @return YES/NO
 */
+ (BOOL)isFrontCameraAvailable;

/**
 判断相机是否可用(后置)
 
 @return YES/NO
 */
+ (BOOL)isRearCameraAvailable;
@end

NS_ASSUME_NONNULL_END
